package pl.com.like.sequoia.dao;

import java.io.Serializable;
import java.util.Collection;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.SessionFactory;

public interface IGenericDao<T, PK extends Serializable> {

	public abstract void evict(T o);

	public abstract boolean exists(PK id);

	public abstract void flush();

	public abstract T get(PK id);

	public abstract List<T> getAll();

	public abstract List<T> getAllDistinct();

	public abstract Criteria getCriteria();

	public abstract T load(PK id);

	public abstract T merge(T o);

	public abstract void refresh(T o);

	public abstract void remove(PK id);

	public abstract void remove(T id);

	public abstract void removeAll(Collection<T> list);

	public abstract void save(T o);

	public abstract void saveOrUpdate(T o);

	public abstract void setSession(SessionFactory session);
}